]> permondes.de Git - Analog_Engine.git/blobdiff - AESL/TP1 06.18 Mass in Tube.AESL
Application: Mass in Tube; Helper Functions
[Analog_Engine.git] / AESL / TP1 06.18 Mass in Tube.AESL
diff --git a/AESL/TP1 06.18 Mass in Tube.AESL b/AESL/TP1 06.18 Mass in Tube.AESL
new file mode 100644 (file)
index 0000000..e85e7c7
--- /dev/null
@@ -0,0 +1,49 @@
+IDENTIFICATION DIVISION
+PROGRAM-ID MassInTube
+VERSION 20240214
+COMMENT A thin tube rotates at a constant angular velocity perpendicular to gravity 
+COMMENT A mass point moves frictionless in this tube. The differential equation gives the position of this mass point.
+COMMENT r''=omega^2*r -g*sin(omega*t+phi0)
+
+ENVIRONMENT DIVISION
+ENGINE Anabrid-THAT
+TIMEBASE 1ms
+REQUIRES COEFFICIENT 8, INTEGRATOR 4, INVERTER 1, MULTIPLIER 2
+
+DATA DIVISION
+OUTPUT OUTPUT.X x
+OUTPUT OUTPUT.Y y
+COEFFICIENT.1 ICw'    
+COEFFICIENT.2 ICw     
+COEFFICIENT.3 OMEGAC
+COEFFICIENT.4 OMEGAS  # same as OMEGAC
+COEFFICIENT.5 G
+COEFFICIENT.6 R0      # r(0)
+COEFFICIENT.7 V0      # r'(0)
+COEFFICIENT.8 OMEGA^2 # = OMEGAC*OMEGAS
+
+PROGRAM DIVISION
+### Generating sin(omega*t+phi0) ###
++1 -> COEFFICIENT.ICw’ -> icw’
+-1 -> COEFFICIENT.ICw  -> -icw 
+w’’, IC:icw’ -> INTEGRATOR -> -w’=-cos
+-w' -> COEFFICIENT.OMEGAC -> -omega*w'
+-omega*w', IC:-icw -> INTEGRATOR -> w=sin
+w  -> INVERTER -> -w=-sin
+-w -> COEFFICIENT.OMEGAS -> -omega^2*w=w’’
+
+### the actual problem ###
+-sin -> COEFFICIENT.G  -> -g*sin
+-1   -> COEFFICIENT.R0 -> -r0
++1   -> COEFFICIENT.V0 -> v0
+omega^2*r, -g*sin,IC:v0  -> INTEGRATOR -> -r' # input is r''
+-r',IC:-r0 -> INTEGRATOR -> r
+r -> COEFFICIENT.OMEGA^2 -> omega^2*r
+
+### Converting r, phi to x,y coordinates for display ###
+r, sin  -> MULTIPLIER -> x
+r, -cos -> MULTIPLIER -> y # y-axis shall go down according to gravity, thus negativ input
+
+OPERATION DIVISION
+MODE REPEAT
+OP-TIME 17,5ms